package com.yanqu.road.server.logic.task;

import com.yanqu.road.entity.clinic.UserClinicData;
import com.yanqu.road.entity.enums.eGamePlayerEventType;
import com.yanqu.road.entity.enums.ePlayerAttrType;
import com.yanqu.road.entity.enums.eTaskType;
import com.yanqu.road.entity.enums.eTradeWarBuildingType;
import com.yanqu.road.entity.event.EventTriggerArgs;
import com.yanqu.road.entity.event.IEventListener;
import com.yanqu.road.entity.manor.ManorHarvestData;
import com.yanqu.road.entity.player.UserBeauty;
import com.yanqu.road.entity.player.UserBuilding;
import com.yanqu.road.entity.player.UserPatrons;
import com.yanqu.road.entity.player.UserVehicle;
import com.yanqu.road.entity.task.TaskConditionInfo;
import com.yanqu.road.entity.task.TaskInfo;
import com.yanqu.road.entity.task.args.*;
import com.yanqu.road.server.gameplayer.GamePlayer;
import com.yanqu.road.server.gameplayer.module.clinic.ClinicModule;
import com.yanqu.road.server.gameplayer.module.inn.InnModule;
import com.yanqu.road.server.gameplayer.module.manor.ManorHarvestModel;
import com.yanqu.road.server.gameplayer.module.manor.ManorModule;
import com.yanqu.road.server.gameplayer.module.passRoad.PassRoadModule;
import com.yanqu.road.server.gameplayer.module.patrons.PatronsModule;
import com.yanqu.road.server.gameplayer.module.player.*;
import com.yanqu.road.server.gameplayer.module.sacrifice.SacrificeModule;
import com.yanqu.road.server.gameplayer.module.travel.TravelModule;
import com.yanqu.road.server.gameplayer.module.union.UnionParergonModule;
import com.yanqu.road.server.gameplayer.module.vehicle.VehicleModule;
import com.yanqu.road.server.logic.activity.condition.musicroom.MusicRoomBuildingUnlockCondition;
import com.yanqu.road.server.logic.activity.condition.musicroom.MusicRoomFurnitureLevelCondition;
import com.yanqu.road.server.logic.activity.condition.musicroom.MusicRoomMissionCondition;
import com.yanqu.road.server.logic.activity.condition.specialserver.*;
import com.yanqu.road.server.logic.task.condition.*;
import com.yanqu.road.server.logic.task.condition.cricket.CricketGetTimesCondition;
import com.yanqu.road.server.logic.task.condition.cricket.CricketPassiveSkillLevelCondition;
import com.yanqu.road.server.logic.task.condition.cricket.CricketUpTitleCondition;
import com.yanqu.road.server.logic.task.condition.kowloon.KowloonChapter297Condition;
import com.yanqu.road.server.logic.task.condition.kowloon.KowloonChapter298Condition;
import com.yanqu.road.server.logic.task.condition.kowloon.KowloonHeroMergeCondition;
import com.yanqu.road.server.logic.task.condition.kuang.KuangBattleDay1ScoreCondition;
import com.yanqu.road.server.logic.task.condition.kuang.KuangBattleDay2ScoreCondition;
import com.yanqu.road.server.logic.task.condition.specialcookboy.SpecialCookBoyLevelBeautyCondition;
import com.yanqu.road.server.logic.task.condition.specialcookboy.SpecialCookBoyLevelMainRoleCondition;
import com.yanqu.road.server.logic.task.condition.weekend.WeekendDayRechargeCondition;
import com.yanqu.road.server.manger.config.TaskMgr;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.math.BigInteger;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;

public abstract class BaseCondition {

    private static final Logger logger = LogManager.getLogger(BaseCondition.class.getName());

    protected GamePlayer player;

    private boolean isNoticeTaskComplete = false;// 是否已经通知任务完成
    /**
     * 任务条件
     */
    protected TaskConditionInfo taskConditionInfo;

    private BaseTaskData baseTaskData;

    private Object initArgs;
    /**
     * 完成条件数量
     */
    private BigInteger value;

    public BaseCondition(TaskConditionInfo taskConditionInfo, BaseTaskData baseTaskData, BigInteger value, Object initArgs) {
        super();
        this.taskConditionInfo = taskConditionInfo;
        this.baseTaskData = baseTaskData;
        this.value = value;
        this.initArgs = initArgs;
        player = baseTaskData.getGamePlayer();
    }

    public void initValue() {
        if (initArgs != null) {
            changeValue(initArgs);
        }
    }

    public abstract void addTrigger(GamePlayer player);

    public abstract void removeTrigger(GamePlayer player);

    public boolean isCompleted(GamePlayer player) {
        return false;
    }

    public boolean finish(GamePlayer player) {
        return true;
    }

    public boolean cancelFinish(GamePlayer player) {
        return true;
    }

    public final BigInteger getValue() {
        return value;
    }

    //财神密卷的第一档值是0可以默认领取的，重置的时候不会同步
    private boolean isForceUpdateSync(){
        if (baseTaskData.getUserTaskData() == null) {
            return false;
        }
        if(baseTaskData.getUserTaskData().getTaskType() == eTaskType.SecretVolumeLevel.getValue()){
            return true;
        }
        return false;
    }

    public final void setValue(BigInteger value) {
        // 值变更前，检测是有有用户任务数据，没有的话初始化
        if (baseTaskData.getUserTaskData() == null) {
            baseTaskData.initUserTaskData();
        }
        if (!Objects.equals(this.value, value) || isForceUpdateSync()) {
            this.value = value;
            baseTaskData.changeValue();
            TaskInfo taskInfo = TaskMgr.getTaskInfoById(baseTaskData.getUserTaskData().getTaskId());
            if (taskInfo.getType() == eTaskType.Beauty.getValue() && isCompleted(player)) {//美女任务完成，直接发奖励
                baseTaskData.finishBeautyTask();
            } else if (taskInfo.getType() == eTaskType.ManorObjLevel.getValue() && isCompleted(player)) {
                baseTaskData.finish();
            } else if (taskInfo.getType() == eTaskType.ALiPayTask.getValue() && isCompleted(player)) {
                baseTaskData.finishALiPayTask();
            } else if (taskInfo.getType() == eTaskType.ALiPayFiveBlessingsTask.getValue() && isCompleted(player)) {
                baseTaskData.finishALiPayTask();
            } else if (taskInfo.getType() == eTaskType.MeiTuanTask.getValue() && isCompleted(player)) {
                baseTaskData.finishMeiTuanTask();
            }
            // 判断是否已经完成任务 如果完成任务 则发一条任务成功协议
            if (!isNoticeTaskComplete && isCompleted(player)) {
                isNoticeTaskComplete = true;
                // 发送任务完成通知
            }
            this.autoGetReward();
        }
    }

    private void autoGetReward(){
        TaskInfo taskInfo = TaskMgr.getTaskInfoById(taskConditionInfo.getTaskId());
        if(taskInfo.getType() == eTaskType.SecretVolumeTask.getValue()){
            if(baseTaskData.canCompleted() && player.getModule(SecretVolumeModule.class).isNowInTime()){
                baseTaskData.finish();
            }
        }
        if (taskInfo.getType() == eTaskType.IceServerMainTask.getValue() && isCompleted(player)) {
            baseTaskData.finish();
        }
    }

    public static BaseCondition createCondition(GamePlayer player, BaseTaskData baseTaskData, TaskConditionInfo info, BigInteger value) {
        Map<Integer, UserBuilding> buildingMap = player.getModule(BuildingModule.class).getBuildingMap();

        Map<Integer, UserPatrons> patronsMap = player.getModule(PatronsModule.class).getUserPatronsMap();

        Map<String, UserVehicle> vehicleMap = player.getModule(VehicleModule.class).getUserVehicleMap();

        Map<Integer, UserBeauty> beautyMap = player.getModule(BeautyModule.class).getBeautyMap();

        Map<Integer, ManorHarvestData> manorHarvestDataMap = new ConcurrentHashMap<>();
        ManorHarvestModel harvestModel = player.getModule(ManorModule.class).getHarvestModel();
        if (harvestModel != null) {
            manorHarvestDataMap = harvestModel.getHarvestDataMap();
        }

        AttributeModule attributeModule = player.getModule(AttributeModule.class);

        if(eGamePlayerEventType.LoginDays.getValue() == info.getType()) {//登录天数
            return new LoginDaysCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.RecruitStaffCount.getValue() == info.getType()) {//招募员工数
            return new RecruitStaffCountCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.BeautyTrystTimes.getValue() == info.getType()) {//美女传唤次数
            return new BeautyTrystTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.ChildTrainTimes.getValue() == info.getType()) {//子嗣培养次数
            return new ChildTrainTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.MarriageTimes.getValue() == info.getType()) {//联姻次数
            return new MarriageTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.TradeWarKillPatronsCount.getValue() == info.getType()) {//商战击败门客数
            return new TradeWarKillPatronsCountCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.MineWarRobTimes.getValue() == info.getType()) {//矿战抢夺矿场成功次数
            return new MineWarRobTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.MineWarGetRewardTimes.getValue() == info.getType()) {//寻宝领取收益次数
            return new MineWarGetRewardTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.WorshipTimes.getValue() == info.getType()) {//膜拜次数
            return new WorshipTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.MammonWorshipTimes.getValue() == info.getType()) {//财神庙参拜次数
            return new MammonWorshipTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.EstateWarMallBuyMallCount.getValue() == info.getType()) {//乔迁商店购买商品数量
            return new EstateWarMallBuyMallCountCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.TravelTimes.getValue() == info.getType()) {//游历次数
            return new TravelTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.PassBattleSuccessTimes.getValue() == info.getType()) {//关卡谈判成功次数
            return new PassBattleSuccessTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.PatronsUpgradeTimes.getValue() == info.getType()) {//门客升级次数
            return new PatronsUpgradeTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.PatronsUpgradeTimesForALi.getValue() == info.getType()) {//门客升级次数
            return new PatronsUpgradeTimesForALiCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.PatronsSkillUpgradeTimes.getValue() == info.getType()) {//门客技能升级次数
            return new PatronsSkillUpgradeTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.PatronsTypeSkillUpgradeTimes.getValue() == info.getType()) {//门客类型技能升级次数
            return new PatronsTypeSkillUpgradeTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.HouseClickTimes.getValue() == info.getType()) {//钱庄点击次数
            return new HouseClickTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.GiveLikeTimes.getValue() == info.getType()) {//点赞次数
            return new GiveLikeTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.HouseTotalClickTimes.getValue() == info.getType()) {//钱庄累计点击次数
            return new HouseTotalClickTimesCondition(info, baseTaskData, value, player.getModule(HouseModule.class).getUserHouse());
        }else if(eGamePlayerEventType.HouseLevel.getValue() == info.getType()) {//钱庄等级
            return new HouseLevelCondition(info, baseTaskData, value, player.getUserInfo().getHouseLv());
        }else if(eGamePlayerEventType.HasBuilding.getValue() == info.getType()) {//拥有店铺
            return new HasBuildingCondition(info, baseTaskData, value, new BuildingArgs(buildingMap));
        }else if(eGamePlayerEventType.StaffCount.getValue() == info.getType()) {//员工数量
            return new StaffCountCondition(info, baseTaskData, value, new BuildingArgs(buildingMap));
        }else if(eGamePlayerEventType.BuildingLevel.getValue() == info.getType()) {//店铺等级
            return new BuildingLevelCondition(info, baseTaskData, value, new BuildingArgs(buildingMap));
        }else if(eGamePlayerEventType.BuildingDispatchPatronsCount.getValue() == info.getType()) {//店铺派遣门客数量
            return new BuildingDispatchPatronsCountCondition(info, baseTaskData, value, new BuildingArgs(buildingMap));
        }else if(eGamePlayerEventType.HasLevelPatronsCount.getValue() == info.getType()) {//达到等级门客数量
            return new HasLevelPatronsCountCondition(info, baseTaskData, value, new PatronsArgs(patronsMap));
        }else if(eGamePlayerEventType.BeautySkillModifyTimes.getValue() == info.getType()) {//美女技能改造次数
            return new BeautySkillModifyTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.TradeWarTimes.getValue() == info.getType()) {//商战次数
            return new TradeWarTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.UnionConstructTimes.getValue() == info.getType()) {//商会建设次数
            return new UnionConstructTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.ParergonOperateTimes.getValue() == info.getType()) {//商会副业经营次数
            return new ParergonOperateTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.TradeWarChallengeTimes.getValue() == info.getType()) {//商战挑战次数
            return new TradeWarChallengeTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.VehicleSkillModifyTimes.getValue() == info.getType()) {//珍兽技能改造次数
            return new VehicleSkillModifyTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.EstateWarRobTimes.getValue() == info.getType()) {//乔迁风云抢占次数
            return new EstateWarRobTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.BeautyRewardTimes.getValue() == info.getType()) {//美女赏赐次数
            return new BeautyRewardTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.BeautyUnlock.getValue() == info.getType()) {//美女解锁进度
            return new BeautyUnlockCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.PatronsTotalAbility.getValue() == info.getType()) {//门客总实力
            return new PatronsTotalAbilityCondition(info, baseTaskData, value, new PatronsArgs(patronsMap));
        }else if(eGamePlayerEventType.VehicleTotalCount.getValue() == info.getType()) {//座骑累计数量
            return new VehicleTotalCountCondition(info, baseTaskData, value, player.getModule(VehicleModule.class).getUserVehicleDetail());
        }else if(eGamePlayerEventType.VehicleTotalSkillModifyTimes.getValue() == info.getType()) {//座骑累计技能改装次数
            return new VehicleTotalSkillModifyTimesCondition(info, baseTaskData, value, player.getModule(VehicleModule.class).getUserVehicleDetail());
        }else if(eGamePlayerEventType.HasQualificationVehicleCount.getValue() == info.getType()) {//达到资质座骑数量
            return new HasQualificationVehicleCountCondition(info, baseTaskData, value, new VehicleArgs(vehicleMap));
        }else if(eGamePlayerEventType.PassBattle.getValue() == info.getType()) {//通过关卡
            return new PassBattleCondition(info, baseTaskData, value, player.getModule(PassRoadModule.class).getUserPassRoad());
        }else if(eGamePlayerEventType.TitleLevel.getValue() == info.getType()) {//身份等级
            return new TitleLevelCondition(info, baseTaskData, value, player.getTitleId());
        }else if(eGamePlayerEventType.MoveEstateBuilding.getValue() == info.getType()) {//乔迁府邸
            return new MoveEstateBuildingCondition(info, baseTaskData, value, player.getModule(EstateWarModule.class).getUserEstateWarData());
        }else if(eGamePlayerEventType.BeautyTotalTrystTimes.getValue() == info.getType()) {//美女累计传唤次数
            return new BeautyTotalTrystTimesCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.BeautyTotalRewardTimes.getValue() == info.getType()) {//美女累计赏赐次数
            return new BeautyTotalRewardTimesCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.ChildTotalCount.getValue() == info.getType()) {//累计子嗣数量
            return new ChildTotalCountCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.MarriageTotalTimes.getValue() == info.getType()) {//累计联姻次数
            return new MarriageTotalTimesCondition(info, baseTaskData, value, player.getModule(MarriageModule.class).getUserMarriageData());
        }else if(eGamePlayerEventType.LonelyTotalCount.getValue() == info.getType()) {//累计孤独终老数
            return new LonelyTotalCountCondition(info, baseTaskData, value, player.getModule(MarriageModule.class).getUserMarriageData());
        }else if(eGamePlayerEventType.TradeWarTotalTimes.getValue() == info.getType()) {//商战累计次数
            return new TradeWarTotalTimesCondition(info, baseTaskData, value, player.getModule(TradeWarModule.class).getUserTradeWarInfo());
        }else if(eGamePlayerEventType.TradeWarTotalKillPatronsCount.getValue() == info.getType()) {//商战累计击败门客数量
            return new TradeWarTotalKillPatronsCountCondition(info, baseTaskData, value, player.getModule(TradeWarModule.class).getUserTradeWarInfo());
        }else if(eGamePlayerEventType.TradeWarMaxKillPatronsCount.getValue() == info.getType()) {//商战最多击败门客数量
            return new TradeWarMaxKillPatronsCountCondition(info, baseTaskData, value, player.getModule(TradeWarModule.class).getUserTradeWarInfo());
        }else if(eGamePlayerEventType.MineWarTotalRobTimes.getValue() == info.getType()) {//矿战累计占领次数
            return new MineWarTotalRobTimesCondition(info, baseTaskData, value, player.getModule(MineWarModule.class).getUserMineData());
        }else if(eGamePlayerEventType.HasLevelBuildingCount.getValue() == info.getType()) {//达到等级店铺数量
            return new HasLevelBuildingCountCondition(info, baseTaskData, value, new BuildingArgs(buildingMap));
        }else if(eGamePlayerEventType.BeautyTotalCount.getValue() == info.getType()) {//美女累计获得数量
            return new BeautyTotalCountCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.PatronsTotalBreakTimes.getValue() == info.getType()) {//门客累计突破次数
            return new PatronsTotalBreakTimesCondition(info, baseTaskData, value, new PatronsArgs(patronsMap));
        }else if(eGamePlayerEventType.PatronsTotalLevel.getValue() == info.getType()) {//门客总等级
            return new PatronsTotalLevelCondition(info, baseTaskData, value, new PatronsArgs(patronsMap));
        }else if(eGamePlayerEventType.PatronsSkillTotalUpgradeTimes.getValue() == info.getType()) {//门客技能累计升级次数
            return new PatronsSkillTotalUpgradeTimesCondition(info, baseTaskData, value, new PatronsArgs(patronsMap));
        }else if(eGamePlayerEventType.TaxOfficeLevel.getValue() == info.getType()) {//税所等级
            return new TaxOfficeLevelCondition(info, baseTaskData, value, player.getModule(TradeWarBuildingModule.class).getUserTradeWarBuilding(eTradeWarBuildingType.TaxOffice.getValue()));
        }else if(eGamePlayerEventType.TravelTotalTimes.getValue() == info.getType()) {//累计游历次数
            return new TravelTotalTimesCondition(info, baseTaskData, value, player.getModule(TravelModule.class).getUserTravel());
        }else if(eGamePlayerEventType.BuildingTotalLevel.getValue() == info.getType()) {//店铺总等级
            return new BuildingTotalLevelCondition(info, baseTaskData, value, new BuildingArgs(buildingMap));
        }else if(eGamePlayerEventType.BuildingEarnSpeed.getValue() == info.getType()) {//店铺赚速
            return new BuildingEarnSpeedCondition(info, baseTaskData, value, new BuildingArgs(buildingMap));
        }else if(eGamePlayerEventType.ChildEarnSpeed.getValue() == info.getType()) {//子嗣赚速
            return new ChildEarnSpeedCondition(info, baseTaskData, value, player.getModule(MarriageModule.class).getUserMarriageData());
        }else if(eGamePlayerEventType.EarnSpeed.getValue() == info.getType()) {//玩家赚速
            return new EarnSpeedCondition(info, baseTaskData, value, player.getModule(EarnSpeedModule.class).getEarnSpeed());
        }else if(eGamePlayerEventType.StaffTotalCount.getValue() == info.getType()) {//总员工数
            return new StaffTotalCountCondition(info, baseTaskData, value, new BuildingArgs(buildingMap));
        }else if(eGamePlayerEventType.TradeWarTotalBuyBuffTimes.getValue() == info.getType()) {//累计商战鼓舞次数
            return new TradeWarTotalBuyBuffTimesCondition(info, baseTaskData, value, player.getModule(TradeWarModule.class).getUserTradeWarInfo());
        }else if(eGamePlayerEventType.JoinUnion.getValue() == info.getType()) {//加入商会
            return new JoinUnionCondition(info, baseTaskData, value, player.getUserInfo());
        }else if(eGamePlayerEventType.ConsumeItem.getValue() == info.getType()) {//使用道具次数
            return new ConsumeItemCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.VehicleSkillValidCount.getValue() == info.getType()) {//座骑技能生效数量
            return new VehicleSkillValidCountCondition(info, baseTaskData, value, new VehicleArgs(vehicleMap));
        }else if(eGamePlayerEventType.ExistVehicleTotalUpgradeTimes.getValue() == info.getType()) {//累计座骑升级次数（存在的）
            return new ExistVehicleTotalUpgradeTimesCondition(info, baseTaskData, value, new VehicleArgs(vehicleMap));
        }else if(eGamePlayerEventType.VehicleTotalUpgradeTimes.getValue() == info.getType()) {//累计座骑升级次数
            return new VehicleTotalUpgradeTimesCondition(info, baseTaskData, value, player.getModule(VehicleModule.class).getUserVehicleDetail());
        }else if(eGamePlayerEventType.ChildTotalTrainTimes.getValue() == info.getType()) {//累计子嗣培养次数
            long totalTimes = attributeModule.getAttribute(ePlayerAttrType.ChildTotalTrainTimes);
            return new ChildTotalTrainTimesCondition(info, baseTaskData, value, totalTimes);
        }else if(eGamePlayerEventType.BeautyTotalUpgradeTimes.getValue() == info.getType()) {//累计美女升级次数
            return new BeautyTotalUpgradeTimesCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.BeautyTotalSkillModifyTimes.getValue() == info.getType()) {//累计美女技能改装次数
            long totalTimes = attributeModule.getAttribute(ePlayerAttrType.BeautyTotalSkillModifyTimes);
            return new BeautyTotalSkillModifyTimesCondition(info, baseTaskData, value, totalTimes);
        }else if(eGamePlayerEventType.PublishServerMarriageApplyTotalTimes.getValue() == info.getType()) {//累计发布全服联姻次数
            long totalTimes = attributeModule.getAttribute(ePlayerAttrType.PublishServerMarriageApplyTotalTimes);
            return new PublishServerMarriageApplyTotalTimesCondition(info, baseTaskData, value, totalTimes);
        }else if(eGamePlayerEventType.VehicleEquipCount.getValue() == info.getType()) {//座骑装备数量
            return new VehicleEquipCountCondition(info, baseTaskData, value, new VehicleArgs(vehicleMap));
        }else if(eGamePlayerEventType.ChildTotalAdultCount.getValue() == info.getType()) {//累计子嗣成年数量
            long totalTimes = attributeModule.getAttribute(ePlayerAttrType.ChildTotalAdultCount);
            return new ChildTotalAdultCountCondition(info, baseTaskData, value, totalTimes);
        }else if(eGamePlayerEventType.TradeWarBuildingTotalGetRewardTimes.getValue() == info.getType()) {//商战建筑领取奖励次数
            return new TradeWarBuildingTotalGetRewardTimesCondition(info, baseTaskData, value,
                    new TradeWarBuildingArgs(player.getModule(TradeWarBuildingModule.class).getUserTradeWarBuildingMap()));
        }else if(eGamePlayerEventType.PatronsTotalQualification.getValue() == info.getType()) {//门客总资质
            return new PatronsTotalQualificationCondition(info, baseTaskData, value, new PatronsArgs(patronsMap));
        }else if(eGamePlayerEventType.PatronsTotalCount.getValue() == info.getType()) {//门客总数量
            return new PatronsTotalCountCondition(info, baseTaskData, value, new PatronsArgs(patronsMap));
        }else if(eGamePlayerEventType.PatronsTotalEarnSpeed.getValue() == info.getType()) {//门客总赚速
            return new PatronsTotalEarnSpeedCondition(info, baseTaskData, value, player.getModule(PatronsModule.class).getTotalPatronsAbility());
        }else if(eGamePlayerEventType.BeautyTotalIntimacy.getValue() == info.getType()) {//美女总亲密度
            return new BeautyTotalIntimacyCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.BeautyTotalPromotionTimes.getValue() == info.getType()) {//美女累计晋升次数
            return new BeautyTotalPromotionTimesCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.BeautyTotalLevel.getValue() == info.getType()) {//美女总等级
            return new BeautyTotalLevelCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.BeautyMaxIntimacy.getValue() == info.getType()) {//美女最高亲密度
            return new BeautyMaxIntimacyCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.BeautyTotalGlamour.getValue() == info.getType()) {//美女总魅力值
            return new BeautyTotalGlamourCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.BeautyMaxGlamour.getValue() == info.getType()) {//美女最高魅力值
            return new BeautyMaxGlamourCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.VehicleTotalType.getValue() == info.getType()) {//座骑总类型
            return new VehicleTotalTypeCondition(info, baseTaskData, value, player.getModule(VehicleModule.class).getUserVehicleDetail());
        }else if(eGamePlayerEventType.VehicleTotalDeleteCount.getValue() == info.getType()) {//珍兽累计放归数量
            return new VehicleTotalDeleteCountCondition(info, baseTaskData, value, player.getModule(VehicleModule.class).getUserVehicleDetail());
        }else if(eGamePlayerEventType.VehicleQualitySixAboveTotalCount.getValue() == info.getType()) {//珍兽品质6以上累计数量
            return new VehicleQualitySixAboveTotalCountCondition(info, baseTaskData, value, player.getModule(VehicleModule.class).getUserVehicleDetail());
        }else if(eGamePlayerEventType.VehicleTotalLevel.getValue() == info.getType()) {//座骑总等级
            return new VehicleTotalLevelCondition(info, baseTaskData, value, new VehicleArgs(vehicleMap));
        }else if(eGamePlayerEventType.PublishWantedTotalTimes.getValue() == info.getType()) {//累计发布通缉次数
            return new PublishWantedTotalTimesCondition(info, baseTaskData, value, player.getModule(TradeWarModule.class).getUserTradeWarInfo());
        }else if(eGamePlayerEventType.BeWantedTotalTimes.getValue() == info.getType()) {//累计被通缉次数
            return new BeWantedTotalTimesCondition(info, baseTaskData, value, player.getModule(TradeWarModule.class).getUserTradeWarInfo());
        }else if(eGamePlayerEventType.TradeWarTotalChallengeTimes.getValue() == info.getType()) {//商战累计挑战次数
            return new TradeWarTotalChallengeTimesCondition(info, baseTaskData, value, player.getModule(TradeWarModule.class).getUserTradeWarInfo());
        }else if(eGamePlayerEventType.TradeWarTotalBeKillPatronsCount.getValue() == info.getType()) {//商战累计被击败门客数量
            return new TradeWarTotalBeKillPatronsCountCondition(info, baseTaskData, value, player.getModule(TradeWarModule.class).getUserTradeWarInfo());
        }else if(eGamePlayerEventType.MoveEstateBuildingFloor.getValue() == info.getType()) {//乔迁府邸到楼层
            return new MoveEstateBuildingFloorCondition(info, baseTaskData, value, player.getModule(EstateWarModule.class).getUserEstateWarData());
        }else if(eGamePlayerEventType.EstateWarTotalBeRobTimes.getValue() == info.getType()) {//乔迁风云累计被抢占次数
            return new EstateWarTotalBeRobTimesCondition(info, baseTaskData, value, player.getModule(EstateWarModule.class).getUserEstateWarData());
        }else if(eGamePlayerEventType.EstateWarTotalDailyRewardCount.getValue() == info.getType()) {//乔迁风云累计获得每日奖励数量
            return new EstateWarTotalDailyRewardCountCondition(info, baseTaskData, value, player.getModule(EstateWarModule.class).getUserEstateWarData());
        }else if(eGamePlayerEventType.EstateWarTotalRobTimes.getValue() == info.getType()) {//乔迁风云累计抢占成功次数
            return new EstateWarTotalRobTimesCondition(info, baseTaskData, value, player.getModule(EstateWarModule.class).getUserEstateWarData());
        }else if(eGamePlayerEventType.BeautyTotalEncounterTimes.getValue() == info.getType()) {//累计偶遇美女次数
            return new BeautyTotalEncounterTimesCondition(info, baseTaskData, value, player.getModule(TravelModule.class).getUserTravel());
        }else if(eGamePlayerEventType.TravelTotalEventTimes.getValue() == info.getType()) {//累计游历事件次数
            return new TravelTotalEventTimesCondition(info, baseTaskData, value, player.getModule(TravelModule.class).getUserTravel());
        }else if(eGamePlayerEventType.MineWarMaxTeamReward.getValue() == info.getType()) {//矿战单队伍最大收益
            return new MineWarMaxTeamRewardCondition(info, baseTaskData, value, player.getModule(MineWarModule.class).getUserMineData());
        }else if(eGamePlayerEventType.MineWarTotalReward.getValue() == info.getType()) {//寻宝累计收益
            return new MineWarTotalRewardCondition(info, baseTaskData, value, player.getModule(MineWarModule.class).getUserMineData());
        }else if(eGamePlayerEventType.UnionTotalConstructTimes.getValue() == info.getType()) {//商会累计建设次数
            return new UnionTotalConstructTimesCondition(info, baseTaskData, value, attributeModule.getAttribute(ePlayerAttrType.UnionTotalConstructTimes));
        }else if(eGamePlayerEventType.ParergonTotalOperateTimes.getValue() == info.getType()) {//商会副业累计经营次数
            return new ParergonTotalOperateTimesCondition(info, baseTaskData, value, player.getModule(UnionParergonModule.class).getParegonTotalOperateTimes());
        }else if(eGamePlayerEventType.MineWarTotalBeRobTimes.getValue() == info.getType()) {//矿战累计被抢占次数
            return new MineWarTotalBeRobTimesCondition(info, baseTaskData, value, player.getModule(MineWarModule.class).getUserMineData());
        }else if(eGamePlayerEventType.MammonTotalWorshipTimes.getValue() == info.getType()) {//累计膜拜财神次数
            return new MammonTotalWorshipTimesCondition(info, baseTaskData, value, player.getModule(MammonModule.class).getUserMammon());
        }else if(eGamePlayerEventType.TotalKillBossTimes.getValue() == info.getType()) {//累计击杀boss次数
            return new TotalKillBossTimesCondition(info, baseTaskData, value, player.getModule(SacrificeModule.class).getUserSacrifice());
        }else if(eGamePlayerEventType.LoginTotalDays.getValue() == info.getType()) {//累计登录天数
            long days = attributeModule.getAttribute(ePlayerAttrType.LoginTotalDays);
            return new LoginTotalDaysCondition(info, baseTaskData, value, days);
        }else if(eGamePlayerEventType.LoginMaxDays.getValue() == info.getType()) {//历史累计连续登录最多天数
            long days = attributeModule.getAttribute(ePlayerAttrType.LoginMaxDays);
            return new LoginMaxDaysCondition(info, baseTaskData, value, days);
        }else if(eGamePlayerEventType.DailyTaskTotalFinishTimes.getValue() == info.getType()) {//累计完成日常任务次数
            long times = attributeModule.getAttribute(ePlayerAttrType.TotalDailyTaskFinishTimes);
            return new DailyTaskTotalFinishTimesCondition(info, baseTaskData, value, times);
        }else if(eGamePlayerEventType.WorshipTotalTimes.getValue() == info.getType()) {//累计膜拜次数
            long times = attributeModule.getAttribute(ePlayerAttrType.WorshipTotalTimes);
            return new WorshipTotalTimesCondition(info, baseTaskData, value, times);
        }else if(eGamePlayerEventType.RankActivityTopThreeTotalTimes.getValue() == info.getType()) {//累计冲榜前三名次数
            return new RankActivityTopThreeTotalTimesCondition(info, baseTaskData, value, player.getModule(PlayerModule.class).getUserHistoryAttribute());
        }else if(eGamePlayerEventType.TurntableLotteryTotalTimes.getValue() == info.getType()) {//累计转盘抽奖次数
            long times = attributeModule.getAttribute(ePlayerAttrType.TurntableLotteryTotalTimes);
            return new TurntableLotteryTotalTimesCondition(info, baseTaskData, value, times);
        }else if(eGamePlayerEventType.TurntableTotalFullLuckyTimes.getValue() == info.getType()) {//累计转盘满幸运值次数
            return new TurntableTotalFullLuckyTimesCondition(info, baseTaskData, value, attributeModule.getAttribute(ePlayerAttrType.TurntableTotalFullLuckyTimes));
        }else if(eGamePlayerEventType.TotalBeGiveLikeTimes.getValue() == info.getType()) {//累计被点赞次数
            return new BeGiveLikeTotalTimesCondition(info, baseTaskData, value, attributeModule.getAttribute(ePlayerAttrType.TotalBeGiveLikeTimes));
        }else if(eGamePlayerEventType.TotalBeHateTimes.getValue() == info.getType()) {//累计被蛊惑次数
            return new BeHateTotalTimesCondition(info, baseTaskData, value, attributeModule.getAttribute(ePlayerAttrType.TotalBeHateTimes));
        }else if(eGamePlayerEventType.GiveLikeTotalTimes.getValue() == info.getType()) {//累计点赞次数
            return new GiveLikeTotalTimesCondition(info, baseTaskData, value, player.getModule(InteractiveModule.class).getUserInteractive());
        }else if(eGamePlayerEventType.ChangeHeadIconTimes.getValue() == info.getType()) {//修改头像次数
            return new ChangeHeadIconTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.RelativesCount.getValue() == info.getType()) {//亲家数量
            return new RelativesCountCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.BeautyTotalFateSkillUpgradeTimes.getValue() == info.getType()) {//美女缘分技能升级次数
            return new BeautyTotalFateSkillUpgradeTimesCondition(info, baseTaskData, value, player.getModule(BeautyModule.class).getUserBeautyData());
        }else if(eGamePlayerEventType.VipExp.getValue() == info.getType()) {//累计vip经验
            return new VipExpCondition(info, baseTaskData, value, player.getUserInfo().getVipExp());
        }else if(eGamePlayerEventType.BanquetTotalConductTimes.getValue() == info.getType()) {//累计宴会举办次数
            return new BanquetTotalConductTimesCondition(info, baseTaskData, value, attributeModule.getAttribute(ePlayerAttrType.BanquetTotalConductTimes));
        }else if(eGamePlayerEventType.BanquetTotalJoinTimes.getValue() == info.getType()) {//累计宴会参加次数
            return new BanquetTotalJoinTimesCondition(info, baseTaskData, value, attributeModule.getAttribute(ePlayerAttrType.BanquetTotalJoinTimes));
        }else if(eGamePlayerEventType.BeautyTotalTravelTimes.getValue() == info.getType()) {//累计美女出游次数
            return new BeautyTotalTravelTimesCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.BeautyTotalBathTimes.getValue() == info.getType()) {//累计美女洗澡次数
            return new BeautyTotalBathTimesCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.BeautyTotalFavorTimes.getValue() == info.getType()) {//累计美女宠幸次数
            return new BeautyTotalFavorTimesCondition(info, baseTaskData, value, new BeautyArgs(beautyMap));
        }else if(eGamePlayerEventType.RechargeTotalTimes.getValue() == info.getType()) {//累计充值次数
            return new RechargeTotalTimesCondition(info, baseTaskData, value, attributeModule.getAttribute(ePlayerAttrType.RechargeTotalTimes));
        }else if(eGamePlayerEventType.BanquetJoinTimes.getValue() == info.getType()) {//宴会参加次数
            return new BanquetJoinTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.ConsumeAddSilverItem.getValue() == info.getType()) {//分钟卡消耗次数
            return new ConsumeAddSilverItemCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.BanquetIntegral.getValue() == info.getType()) {//宴会积分增加
            return new BanquetIntegralCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.SecretVolumeExp.getValue() == info.getType()) {//密卷经验等级
            return new SecretVolumeLevelCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.CharitableTotalTimes.getValue() == info.getType()) {
            return new CharitableTotalTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.NpcTradeTimes.getValue() == info.getType()) {
            return new NpcTradeTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.InnCookTimes.getValue() == info.getType()) { //烹饪次数
            return new InnCookTimesCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.InnTotalCookTimes.getValue() == info.getType()) { //累计烹饪次数
            return new InnTotalCookTimesCondition(info, baseTaskData, value, player.getModule(InnModule.class).getUserTotalCookTimes());
        }else if(eGamePlayerEventType.ClinicReception.getValue() == info.getType()) { //医馆接诊人数
            return new ClinicReceptionCondition(info, baseTaskData, value, null);
        }else if(eGamePlayerEventType.ManorObjectLevel.getValue() == info.getType()) {  //庄园物件等级
            return new ManorObjectLevelCondition(info, baseTaskData, value, new ManorArgs(manorHarvestDataMap));
        } else if (eGamePlayerEventType.ManorProsperousValue.getValue() == info.getType()) { //庄园繁荣度
            long prosperousValue = 0;
            if (player.getModule(ManorModule.class).getUserManorData() != null) {
                prosperousValue = player.getModule(ManorModule.class).getUserManorData().getProsperousValue();
            }
            return new ManorProsperousValueCondition(info, baseTaskData, value, prosperousValue);
        } else if (eGamePlayerEventType.CatchThiefCount.getValue() == info.getType()) { //抓捕小偷数量
            long totalTimes = attributeModule.getAttribute(ePlayerAttrType.CatchThiefCount);
            return new CatchThiefCountCondition(info, baseTaskData, value, totalTimes);
        } else if (eGamePlayerEventType.BankCreditValue.getValue() == info.getType()) { //钱庄信誉值
            long bankCreditValue = attributeModule.getAttribute(ePlayerAttrType.HouseCreditValue);
            return new BankCreditValueCondition(info, baseTaskData, value, bankCreditValue);
        } else if (eGamePlayerEventType.ClinicScore.getValue() == info.getType()){  //医馆评分
            long score = 0;
            UserClinicData userClinicData = player.getModule(ClinicModule.class).getUserClinicData();
            if (userClinicData != null) {
                score = userClinicData.getClinicScore();
            }
            return new ClinicScoreCondition(info, baseTaskData, value, score);
        } else if (eGamePlayerEventType.LunTanLoginTimes.getValue() == info.getType()) { //自营论坛登录次数
            return new LunTanLoginTimesCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.MammonDecorationCount.getValue() == info.getType()){
            return new MammonDecorationCountCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.DrugStoreChuFangLevel.getValue() == info.getType()) {
            return new DrugStoreChuFangLevelCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.DrugStoreTechLevel.getValue() == info.getType()) {
            return new DrugStoreTechLevelCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.DrugStoreReceiveNumLevel.getValue() == info.getType()) {
            return new DrugStoreReceiveNumCondition(info, baseTaskData, value, null);
        } else if (isFishPondTask(info.getType())) {    //鱼塘任务

        } else if (eGamePlayerEventType.GrandChildOfficialCount.getValue() == info.getType()) { //孙子科举官职数量
            return new GrandChildOfficialCountCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.ClinicTotalReception.getValue() == info.getType()) {
            return new ClinicTotalReceptionCondition(info, baseTaskData, value, player.getModule(ClinicModule.class).getUserClinicData());
        } else if (eGamePlayerEventType.MammonShopWakeupProcess.getValue() == info.getType()) {
            return new MammonShopWakeupCondition(info, baseTaskData, value, null);
        }else if (eGamePlayerEventType.WineryMakeTimes.getValue() == info.getType()) {
            return new WineryMakeTimesCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.RecordScreenShare.getValue() == info.getType()) {
            return new RecordScreenShareCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.GoYouXiQuan.getValue() == info.getType()) {
            return new GoYouXiQuanCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.GoYouXiQuan7Day.getValue() == info.getType()) {
            return new GoYouXiQuan7DayCondition(info, baseTaskData, value, null);
        }  else if (eGamePlayerEventType.CricketPassiveSkillLevel.getValue() == info.getType()) {
            return new CricketPassiveSkillLevelCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.CricketGetTimes.getValue() == info.getType()) {
            return new CricketGetTimesCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.CricketUpTitle.getValue() == info.getType()) {
            return new CricketUpTitleCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.KowloonChapter297.getValue() == info.getType()) {
            return new KowloonChapter297Condition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.KowloonChapter298.getValue() == info.getType()) {
            return new KowloonChapter298Condition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.KowLoonHeroMerge.getValue() == info.getType()) {
            return new KowloonHeroMergeCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.KuangBattleDay1Score.getValue() == info.getType()) {
            return new KuangBattleDay1ScoreCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.KuangBattleDay2Score.getValue() == info.getType()) {
            return new KuangBattleDay2ScoreCondition(info, baseTaskData, value, null);
        }  else if (eGamePlayerEventType.SpecialCookBoyLevelMainRole.getValue() == info.getType()) {
            return new SpecialCookBoyLevelMainRoleCondition(info, baseTaskData, value, null);
        }  else if (eGamePlayerEventType.SpecialCookBoyLevelBeauty.getValue() == info.getType()) {
            return new SpecialCookBoyLevelBeautyCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.WeekendDayRecharge.getValue() == info.getType()) {
            return new WeekendDayRechargeCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.MusicRoomMission.getValue() == info.getType()) {
            return new MusicRoomMissionCondition(info, baseTaskData, value, 0);
        } else if (eGamePlayerEventType.MusicRoomFurnitureLevel.getValue() == info.getType()) {
            return new MusicRoomFurnitureLevelCondition(info, baseTaskData, value, 0);
        } else if (eGamePlayerEventType.MusicRoomBuildingUnlock.getValue() == info.getType()) {
            return new MusicRoomBuildingUnlockCondition(info, baseTaskData, value, 0);
        }  else if (eGamePlayerEventType.ZfbActivityActive.getValue() == info.getType()) {
            return new ZfbActivityActiveCondition(info, baseTaskData, value, null);
        }  else if (eGamePlayerEventType.CurioMaxScoreAchieve.getValue() == info.getType()) {
            return new CurioMaxScoreAchieveCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.IceServerSatiation.getValue() == info.getType()) {
            return new IceServerSatiationCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.IceServerTemperature.getValue() == info.getType()) {
            return new IceServerTemperatureCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.IceServerAddSatiation.getValue() == info.getType()) {
            return new IceServerAddSatiationCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.IceServerAddTemperature.getValue() == info.getType()) {
            return new IceServerAddTemperaturenCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.IceServerAddSliver.getValue() == info.getType()) {
            return new IceServerAddSliverCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.IceServerUpgradeStove.getValue() == info.getType()) {
            return new IceServerUpgradeStoveCondition(info, baseTaskData, value, null);
        } else if (eGamePlayerEventType.IceServerUnlockStoveItem.getValue() == info.getType()) {
            return new IceServerUnlockStoveItemCondition(info, baseTaskData, value, null);
        }  else if (eGamePlayerEventType.IceServerUpgradeBuilding.getValue() == info.getType()) {
            return new IceServerUpgradeBuildingCondition(info, baseTaskData, value, null);
        }  else if (eGamePlayerEventType.IceServerUpgradeAllBuilding.getValue() == info.getType()) {
            return new IceServerUpgradeAllBuildingCondition(info, baseTaskData, value, null);
        } else {
            logger.error(String.format("Can't find baseTaskData baseCondition : %1$s", info.getType()));
        }
        return null;
    }

    public static boolean isFishPondTask(int conditionType) {
        return conditionType >= 232 && conditionType <= 236;
    }

    public long getUserId() {
        if (baseTaskData.getUserTaskData() == null) {
            return 0;
        }
        return baseTaskData.getUserTaskData().getUserId();
    }

    public TaskConditionInfo getTaskConditionInfo() {
        return taskConditionInfo;
    }

    protected abstract void changeValue(Object object);

    protected final eventListenHandle handle = new eventListenHandle();

    public class eventListenHandle implements IEventListener {
        @Override
        public void triggerEvent(EventTriggerArgs eventArgs) {
            changeValue(eventArgs.getArgs());
        }
    }

    public boolean isNeedAutoSendMail() {
        return false;
    }

    public String getMailKey() {
        return String.valueOf(baseTaskData.getTaskId());
    }

    public TaskConditionMail newConditionMail(){
        return null;
    }
}
